TÉCNICAS PARA DISMINUIR LA TASA DE FALLOS
A continuación se van a exponer una serie de técnicas que se pueden utilizar para reducir la tasa de fallos de una memoria cache. Algunas de ellas ya se han visto (Las señaladas con asterisco) y por lo tanto no se va a entrar en mayores consideraciones:
Aumento del tamaño de bloque
Aumento del grado de asociatividad
Caches víctimas
Caches pseudoasociativas
Prebúsqueda hw
Las técnicas de modificar el tamaño de los bloques y el grado de asociatividad son clásicas pero tienen el inconveniente de aumentar el ciclo de reloj, en el caso de aumento del grado de asociatividad, o aumentar la penalización, en el caso de utilizar bloques más grandes. El resto de las técnicas que se tratan no modifican ninguno de estos dos parámetros de rendimiento.
CACHE VÍCTIMA
Se coloca una pequeña cache totalmente asociativa al lado de la cache de manera que siempre que se sustituye un bloque, se carga en el nivel más bajo de la jerarquía y en la cache víctima. Siempre que se produce un fallo se comprueba si el bloque deseado se encuentra en la cache víctima. Si es así, el bloque de la cache y el de la cache víctima se intercambian. Especialmente útiles para pequeñas caches de emplazamiento directo. Para una cache de 4K con una memoria víctima de cuatro entradas se puede eliminar entre el 20% y el 95% de fallos.
CACHE PSEUDO ASOCIATIVA
Se comporta de maneras diferentes si hay acierto o si hay fallo. Si hay un acierto se comporta como una memoria de emplazamiento directo. Si hay un fallo se busca en otro marco de página. ¿En que marco? Lo más sencillo es cambiar el bit más significativo de los bits de marco de la dirección física. Por ejemplo, siendo la interpretación de la dirección física la que aparece a continuación
y
suponiendo que la dirección inicial era 111111 11 11 primero
se buscaría en el marco 11 y se comprobaría la etiqueta
11111. En caso de fallo se accedería al marco de bloque 01 y
se comprobaría la etiqueta 11111. Estas caches tienen dos
tiempos de acierto, uno, el normal, cuando se accede a la primera
como un emplazamiento directo, y el otro, el de pseudoacierto, cuando
el datos buscado se encuentra en el segundo acceso.
Se llama pseudoasociativa en el sentido que se forman conjuntos pseudoasociativos de 2 bloques de manera que no se consultan los dos a la vez, sino que primero se consulta uno y si falla se consulta el otro.
PRE BÚSQUEDA HARDWARE
Consiste en traer a la cache bloques que todavía no ha demandado el procesador. Esta técnica reduce la tasa de fallos. El dato o instrucción prebuscado se puede almacenar, en la propia cache o en un buffer que puede ser más rápidamente accedido. La técnica más habitual es la OBL (One Block Lookahead), en la que se carga el bloque solicitado y el siguiente. Suele ser eficiente siempre que el tamaño del bloque sea pequeño. Existen dos técnicas diferentes. En una de ellas se trae el bloque i+1 solo la primera vez que se referencia i. En la otra, llamada Prebúsqueda sobre fallo se trae el bloque i+1 siempre que se produce un fallo sobre el bloque i. Esta técnica se puede implementar de dos formas diferentes, o bien interna o bien externa a la cache. Por ejemplo el Alpha AXP 21064, carga el bloque referenciado en memoria cache y el otro en un buffer externo, si el bloque deseado se encuentra en este buffer se cancela el fallo de cache, se accede a este bloque y se produce una nueva prebúsqueda.
Se ha demostrado que para una cache de instrucciones de 4kb, con bloque de 16 bytes, con emplazamiento directo y un buffer de un bloque se puede reducir la tasa de fallos de un 15 a un 25%. Con un buffer de 4 bloque se puede reducir un 50% y con uno de 16 un 72%.
Una aproximación similar se puede realizar para una cache de datos. Un buffer sencillo de datos captura el 25% de fallos para una cache de emplazamiento directo de 4kb. Para 4 buffers se incrementa los aciertos en un 43%. Otros estudios indican que para 8 buffers compartidos de datos e instrucciones capturarían entre el 50 y 70% de todos los fallos para un procesador de dos caches asociativas por conjuntos de 4 caminos y 64Kb.